package com.example.basecommon.utils;

import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.text.TextUtils;

public class SpeakUtils {
    public static TextToSpeech mTTS;

    public static void init(Context context, TextToSpeech.OnInitListener listener) {
        if (mTTS == null) {
            mTTS = new TextToSpeech(context.getApplicationContext(), listener);
        }
    }

    /**
     * 仅语音提示不弹框
     *
     * @param msg    朗读字符串
     * @param isPend true加入队列\false清空现有队列马上播放此次调用
     */
    public static void onlySpeak(String msg, boolean isPend) {
        if (mTTS != null) {
            mTTS.speak(msg, isPend ? TextToSpeech.QUEUE_ADD : TextToSpeech.QUEUE_FLUSH, null);
        }
    }

    /**
     * 朗读文本 - 清空队列
     *
     * @param msg 朗读字符串
     */
    public static void onlySpeak(String msg) {
        if (mTTS != null) {
            onlySpeak(msg, false);
        }
    }

    /**
     * 仅响铃提示音
     * * @param speakType 1 完成提示音  2 操作成功提示音  3 错误提示音
     */
    public static void onlyRing(Context context, int speakType) {
        MusicUtils.getInstance().playSuccess(speakType);
    }

    /**
     * 朗读文本并使用TOAST显示提示
     *
     * @param msg       朗读字符串
     * @param isPend    true加入队列\false清空现有队列马上播放此次调用
     * @param isSuccess true正确提示\false错误提示
     */
    public static void speakWithToast(Context context, String msg, boolean isPend, boolean isSuccess) {
        if (!isSuccess && TextUtils.isEmpty(msg))
            return;
        if (!isSuccess) {//失败弹框并播报
//            speak(msg, isPend);
            MusicUtils.getInstance().playSuccess(3);
            SpeakToastUtils.showShortOnDeepBg(context, msg);
        } else {//成功只提示音
//            ToastUtils.showShort(context, msg);
            MusicUtils.getInstance().playSuccess(1);
        }
    }

    /**
     * 朗读文本并使用TOAST显示提示
     *
     * @param resId   朗读字符串res
     * @param isPend  true加入队列\false清空现有队列马上播放此次调用
     * @param isError true错误提示\false正确提示
     */
    public static void speakWithToast(Context context, int resId, boolean isPend, boolean isError) {
        speakWithToast(context, context.getString(resId), isPend, isError);
    }

    public static void shutdown() {
        if (mTTS != null)
            mTTS.shutdown();
    }
}
